參考這張圖,我們從三個不同的面向切入來探討 Datomc 帶來的價值。
Datomic 的事件溯源模型讓每次的交易 (transaction) 都被視為不可變的事件 (immutable event),這為多項商業應用的帶來巨大價值。
在傳資料庫中,對資料的變更通常是不可逆的,一旦執行了某個更新操作,舊的資料就會被覆蓋。然而,在 Datomic 的模型裡,每次交易只是增加一些新的事件,所以可以允許對過去資料庫的狀態進行回溯和恢復,這意味著任何機器錯誤或是人為錯誤都能夠得到快速修正。這樣的可逆性在製造、金融等強調高可靠性的產業中具有深遠意義。
Datomic 提供對交易的查詢功能,這讓每一筆交易都可以輕易地做稽核 (audit)。這種功能除了對於合法合規有用之外,還能幫助企業分析過去的資料變動,以識別潛在的問題與趨勢。例如,金融業可以通過稽核追蹤一筆交易影響到的資料實體,並對其做遞迴查詢找出所有的相關的資料實體,以有效地比對金融詐欺模式 (fraud pattern)。
Datomic 的時間旅行查詢功能使得企業可以回溯到任意時間點,進行 as-of
查詢,以查看任一時間對應的資料庫狀態,這個功能對於新功能測試、找出複雜的臭蟲又或是產品生命周期管理都極有幫助。
Datalog 提供了與 SQL 至少等價的查詢能力,這在 Day 6~ Day 19 已經有充分地論述。不只如此,Datalog 比 SQL 更加直觀的語法,對於企業的生產力提昇有很大的潛力。
Datalog 由於有規則 (rules) 與遞迴查詢的功能,當資料本身有階層關系 (hierarchical relaship) 時,比方說:硬體產品零件樹、社交網路等,Datalog 可以輕易地表現曲折的走訪語意,在階層資料之間自由地來去,讓企業能夠快速挖掘出關鍵洞察。
『將非技術人員的自然語言查詢轉換為 SQL 查詢』的技術,可以讓不同層級的員工都能通過簡單的對話,從資料庫獲得答案,對於企業的決策與生產力極有意義。近年來,隨著大規模語言模型(LLM)的發展,轉換的準確度也得到了大幅進展。即使如此,上述轉換在品質上仍有相當大的進步空間。
另一方面,『自然語言查詢轉換為 Datalog 查詢』,由於 Datalog 本身語法相對靠近自然語言,這個轉換的難度立刻顯著地下降,已經相當接近可以大規模使用。
Datomic 的軟體的架構採用獨特的分散式架構,此一架構一方面保留了關鍵的資料庫交易四大特性 (ACID) 的同時,又兼備了可水平擴展的讀取 (scale out read)。此一架構帶來的影響主要有兩個層面:提昇開發人員的生產力,高可用、可水平擴展的效能特性。
在 Datomic 資料庫,因為讀寫完全分離,所以資料庫的查詢運作的執行環境是在後端程式裡。也因此,自訂查詢函數無需部署 (deploy) 進入資料庫就可直接運行。這種無需部署的特性簡化了查詢語言的語法設計、也加速了開發。
Datomic 可以利用現有的鍵值存儲技術 (DynamoDB、Cassandra),提供高可用性且可水平擴展的資料存儲解決方案。
此外,日後若有更加高效的鍵值存儲技術出現時,Datomic 的軟體只需做微小的修改,就可以移植過去。這一點讓 Datomic 不需要投資大量的成本於存儲技術的研發,卻依然可以享用隨技術進步的鍵值存儲效能紅利。(Clojure 語言運作於 JVM 之上,也是可以享用 JVM 進步帶來的效能紅利。)
Datomic 巧妙地結合了事件溯源、極富表現力的 Datalog 查詢語言、與獨特的分散式架構,因而得到了可逆交易、可稽核的交易、時間旅行查詢、強大的階層式資料查詢、相對接近自然語言的查詢、無需部署的自訂查詢函數、長期的鍵值存儲效能紅利種種特性。綜上所述,Datomic 帶來了容錯、靈活、容易開發且可擴展的資料庫解決方案,足以作為下一代資料庫的典範。